문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 최대 정수 함수 (문단 편집) === C, C++ 언어에서 구현 === C, C++ 언어에서는 math 라이브러리 에 floor() 함수가 존재한다. ||{{{#double floor(double x); }}} [br] {{{#float floorf(float x); }}} [br] {{{#long double floorl(long double x); }}} || ||C math 라이브러리의 floor() 함수 || 위 함수들은 C99 기준이며, C90 에는 double 함수만 존재한다. ||{{{#double floor (double x); }}} [br] {{{#float floor (float x); }}} [br] {{{#long double floor (long double x); }}} || ||C++ math 라이브러리의 floor() 함수|| C++ 에서는 함수 오버로딩이 가능하기에 함수 이름이 모두 floor() 로 같다. 위는 C++98 기준이며, C++11 에는 오버로딩을 위한 double floor (T x); 같은 타입도 추가되어 있다. 위 math 라이브러리의 함수들은 리턴값의 타입이 변경되지 않으므로, 마지막에 int 로 캐스팅 해서 대입하면 된다. 참고로, 원래 입력의 타입을 변경하지 않고 리턴하는 이유는 int 변수 보다 큰값에 대한 처리를 프로그래머에게 넘기기 위해서이다. 예를 들어 double 은 INT_MAX 보다 훨씬 큰 값을 저장할 수 있는데, int 로 미리 변환해서 넘겨 버리면 [[오버플로]]를 대처할 수 없게 된다. math 라이브러리 없이 사용하려면 int 캐스팅을 이용해서 간단히 구현할 수 있다. 다만 이 경우는 음수에서는 정상 동작하지 않기에 아래와 같은 함수를 하나 생성해서 쓰면 된다. 이 역시 오버플로에 대해서는 고려되어 있지 않다. > {{{#int my_floor(double a) }}} > {{{ { }}} > {{{#return (int) ( ((a >= 0) || (a == ((int)a))) ? a : a-1 ) ; }}} > {{{ } }}}저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기